<?php

namespace app\api\controller;

use app\common\controller\Api;
use think\Db;

/**
 * 示例接口
 */
class Demo extends Api
{

    //如果$noNeedLogin为空表示所有接口都需要登录才能请求
    //如果$noNeedRight为空表示所有接口都需要验证权限才能请求
    //如果接口已经设置无需登录,那也就无需鉴权了
    //
    // 无需登录的接口,*表示全部
    protected $noNeedLogin = ['test', 'test1', 'getPendingDishes'];
    // 无需鉴权的接口,*表示全部
    protected $noNeedRight = ['test2'];

    /**
     * 获取待处理的菜品列表
     *
     * @ApiTitle    (获取待处理的菜品列表)
     * @ApiSummary  (获取ai_called为0的菜品数据)
     * @ApiMethod   (GET)
     * @ApiRoute    (/api/demo/getPendingDishes)
     * @ApiReturn   ({
         'code':'1',
         'msg':'返回成功',
         'data':{}
        })
     */
    public function getPendingDishes()
    {
       
            // 查询ai_called为0的菜品数据
            $dishes = Db::name('food_dish')
                ->where('ai_called', 0)
                ->field('id, name')
                ->limit(10)
                ->select();
            
            // 格式化为指定的JSON格式
            $output = [];
            foreach ($dishes as $dish) {
                $output[$dish['id']] = [
                    "菜品名称" => $dish['name']
                ];
            }
            $data = json_encode($output) ;
            $data .="
            正常流程为：
            如菜品名称为：“鲜虾炒鲜菇”
            1、AI拿到“鲜虾炒鲜菇”所需食材，假设，鲜虾，鲜菇，盐，糖，醋，酱等等
            2、给食材都模糊匹配，不管你是用AI还是like fa_food_ingredient.xlsx中的数据，反正是拿到对应数据即可。因为你拿到“鲜虾炒鲜菇”所需食材很简单，难点在于食材名称与fa_food_ingredient.xlsx的匹配很难匹配。这块要仔细研究
            3、按需返回上面的json格式数据。比如鲜菇没有，那就从鲜，菇。等字样去匹配。因为蘑菇在exl中是肯定有的。无非就是你通过什么方式去匹配。
            4、按照规则生成sql语句，如下
            首先给食材全部编写出mysql语句，食材是多个的
            INSERT INTO `yingyang_bcahz_c`.`fa_food_ingredientrel` ( `dish_id`, `ingredient_name`, `ingredient_id`, `parent_id`, `categories_id`, `quantity`, `createtime`, `updatetime`, `weigh`) VALUES (8, '小白菜', 3057, 18, 23, '300g', 1758260845, 1758260845, 1);
            其次给制作步骤及克重编写成mysql语句
            UPDATE fa_food_dish 
            SET steps = '1. 将木耳提前泡发，洗净后撕成小朵；小白菜洗净切段；大蒜切末。
            2. 锅中加水烧开，放入木耳焯水1分钟后捞出沥干。
            3. 热锅凉油，加入蒜末爆香。
            4. 加入小白菜快速翻炒至变软。
            5. 加入木耳继续翻炒均匀。
            6. 加入盐调味，翻炒均匀后即可出锅。',
            ai_called = 1, 
            cook_time = '10分钟' 
            WHERE id = 8;
            5、我不需要html，json等文件，我只需要一个mysql的数据库插入文件。
            6、quantity参数为数字，不需要g克等后缀，只需要数字。";
            dump($data);
      
    }

    /**
     * 测试方法
     *
     * @ApiTitle    (测试名称)
     * @ApiSummary  (测试描述信息)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/demo/test/id/{id}/name/{name})
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="id", type="integer", required=true, description="会员ID")
     * @ApiParams   (name="name", type="string", required=true, description="用户名")
     * @ApiParams   (name="data", type="object", sample="{'user_id':'int','user_name':'string','profile':{'email':'string','age':'integer'}}", description="扩展数据")
     * @ApiReturnParams   (name="code", type="integer", required=true, sample="0")
     * @ApiReturnParams   (name="msg", type="string", required=true, sample="返回成功")
     * @ApiReturnParams   (name="data", type="object", sample="{'user_id':'int','user_name':'string','profile':{'email':'string','age':'integer'}}", description="扩展数据返回")
     * @ApiReturn   ({
         'code':'1',
         'msg':'返回成功'
        })
     */
    public function test()
    {
        // 直接调用admin控制器中的方法  
        $adminController = new \app\admin\controller\food\Ingredient();
        // 由于autoClassify方法中没有使用$this->request，所以可以直接调用
        return $adminController->autoClassify();
        // $this->success('返回成功', $this->request->param());
    }

    /**
     * 无需登录的接口
     *
     */
    public function test1()
    {
        $this->success('返回成功', ['action' => 'test1']);
    }

    /**
     * 需要登录的接口
     *
     */
    public function test2()
    {
        $this->success('返回成功', ['action' => 'test2']);
    }

    /**
     * 需要登录且需要验证有相应组的权限
     *
     */
    public function test3()
    {
        $this->success('返回成功', ['action' => 'test3']);
    }

}